gchar *wm_role;
guint keys_changed_handler;
+ guint delete_event_handler;
guint32 initial_timestamp;
send_delete_event (gpointer data)
{
GtkWidget *window = data;
+ GtkWindowPrivate *priv = GTK_WINDOW (window)->priv;
+
GdkEvent *event;
event = gdk_event_new (GDK_DELETE);
gtk_main_do_event (event);
gdk_event_free (event);
+ priv->delete_event_handler = 0;
+
return G_SOURCE_REMOVE;
}
if (!gtk_widget_get_realized (GTK_WIDGET (window)))
return;
- gdk_threads_add_idle (send_delete_event, window);
+ window->priv->delete_event_handler = gdk_threads_add_idle (send_delete_event, window);
}
static void
priv->keys_changed_handler = 0;
}
+ if (priv->delete_event_handler)
+ {
+ g_source_remove (priv->delete_event_handler);
+ priv->delete_event_handler = 0;
+ }
+
if (priv->screen)
{
g_signal_handlers_disconnect_by_func (priv->screen,
{
GtkWindow *window = (GtkWindow *)user_data;
- send_delete_event (window);
+ if (window->priv->delete_event_handler == 0)
+ send_delete_event (window);
}
static void